Performing machine actions in response to voice input

ABSTRACT

In a method for determining an answer to a query expressed in an imprecise syntax, a formula for computing an answer to the query is determined. An answer is calculated using the formula, and the answer is then presented to the user.

CROSS-REFERENCE TO RELATED APPLICATION

The present application is a continuation of U.S. patent applicationSer. No. 14/082,581, now U.S. Pat. No. 8,966,439, entitled “METHOD ANDSYSTEM FOR DETERMINING AN ANSWER TO A QUERY,” filed Nov. 18, 2013, whichis a continuation of U.S. patent application Ser. No. 11/852,044, nowU.S. Pat. No. 8,589,869, entitled “METHODS AND SYSTEMS FOR DETERMINING AFORMULA,” filed Sep. 7, 2007, which claims the benefit of U.S.Provisional Application No. 60/842,756, entitled “METHODS AND SYSTEMSFOR DETERMINING A FORMULA,” filed on Sep. 7, 2006. All of theapplications referenced above are hereby incorporated by referenceherein in their entireties.

BACKGROUND

The MATHEMATICA® software system available from Wolfram Research, Inc.is a powerful computational tool that can evaluate general symbolicexpressions, as well as mathematical and numeric expressions.MATHEMATICA® is an interpreted language, with a notion of “evaluation”of symbolic expressions. Evaluation consists in applying to any symbolicexpression all transformation rules that fit that expression.

In the MATHEMATICA® software system, a user can create interactiveelectronic documents referred to as “notebooks.” Various expressions,including numeric and symbolic expressions, can be entered into anotebook via a keyboard, for example, and a user can cause theexpression to be evaluated. As a simple example, a user could first seta function ƒ equal to x² by typing “f=x^2” and then pressing “Enter”while holding down the “Shift” key (i.e., “hitting Shift-Enter”). Then,the user could have the MATHEMATICA® software system evaluate theintegral off with respect to x by typing “integral[f,x]” and thenhitting Shift-Enter. Of course, the MATHEMATICA® software system permitsusers to evaluate much more complex expressions and to analyze complexmathematical and scientific problems.

Input to the MATHEMATICA® software system must be in a particular syntaxor MATHEMATICA® will not recognize what the user intended. For example,if a user wants to utilize a built-in function of the MATHEMATICA®software system, such as the function “integral”, the user mustcorrectly type in the word “integral.” Additionally, the expression thatis to be integrated must be included within brackets subsequent to theword “integral”. For example, to evaluate the integral off with respectto x, the text “integral[f,x]” must be typed. If the correct syntax isnot followed exactly, the MATHEMATICA® software system will notrecognize what the user had intended. For example, if a built-infunction or a user-defined function is misspelled, MATHEMATICA® will notrecognize that the user intended to use the function. Similarly, if abracket, comma, parentheses, etc. is erroneously omitted or misplaced,MATHEMATICA® will not recognize what the user intended.

Various currently available on-line calculators utilize formulas togenerate numerical results based on user-provided parameters. As anexample, a website may provide a mortgage payment calculator that uses amathematical formula to calculate a monthly mortgage payment based onvarious parameters such as a mortgage amount and an interest rate. Auser can input values of the parameters by typing numbers into varioustext boxes on the web page. For example, the user can input a mortgageamount, an interest rate, number of years, etc. Then, the user canselect a “Calculate” button on the web page to generate a mortgagepayment, which is presented to the user via a different web page.

Search engines, such as Internet search engines, have been in use forsome time. Such search engines permit the user to form a search queryusing combinations of keywords to search through a web page databasecontaining text indices associated with one or more distinct web pages.The search engine looks for matches between the search query and textindices in the web page database, and then returns a number of hitswhich correspond to URL pointers and text excerpts from the web pagesthat represent the closest matches.

Some Internet search engines analyze the context of keywords in order tonarrow the number of matches. For example, if a search query includesthe words “yellow” and “pages,” a search engine may recognize that thephrase “yellow pages” has a particular meaning and it may therefore notethat web pages including the phrase “yellow pages” may be a closer matchthan web pages merely containing the word “yellow” and/or the word“pages.”

Some application programs, for example, a word processor, may have ahelp tool that allows a user to enter a word or phrase and will displayhelp topics containing that word or phrase, from which the user can makea selection.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flow diagram of an example method for providing one or moreformulas to a user based on an input that may be in an imprecise syntax;

FIG. 2 is a flow diagram of another example method for providing one ormore formulas to a user based on an input that may be in an imprecisesyntax;

FIG. 3A is an illustration of an example display that may be utilized inan implementation of the method of FIG. 1;

FIG. 3B is an illustration of the example display of FIG. 3A after theuser has activated a button;

FIG. 4 is an illustration of another example display that may beutilized in an implementation of the method of FIG. 1;

FIG. 5 is a flow diagram of yet another example method for providing oneor more formulas to a user based on an input that may be in an imprecisesyntax;

FIG. 6 is an illustration of an example display that may be utilized inan implementation of the method of FIG. 5;

FIG. 7 is a flow diagram of still another example method for providingone or more formulas to a user based on an input that may be in animprecise syntax;

FIG. 8 is an illustration of an example display that may be utilized inan implementation of the method of FIG. 7;

FIG. 9 is an illustration of another example display that may beutilized in an implementation of the method of FIG. 7;

FIG. 10 is a flow diagram of yet another example method for providingone or more formulas to a user based on an input that may be in animprecise syntax;

FIG. 11 is a block diagram of an example system for providing one ormore formulas to a user based on an input that may be in an imprecisesyntax;

FIG. 12 is a flow diagram of another example method for providing one ormore formulas to a user based on an input that may be in an imprecisesyntax;

FIG. 13 is an illustration of another example display that may beutilized in an implementation of the method of FIG. 1;

FIG. 14 is an illustration of yet another example display that may beutilized in an implementation of the method of FIG. 1;

FIG. 15 is an illustration of still another example display that may beutilized in an implementation of the method of FIG. 1;

FIG. 16 is an illustration of yet another example display that may beutilized in an implementation of the method of FIG. 1;

FIG. 17 is an illustration of still another example display that may beutilized in an implementation of the method of FIG. 1;

FIG. 18 is an illustration of another example display that may beutilized in an implementation of the method of FIG. 1; and

FIG. 19 is an illustration of yet another example display that may beutilized in an implementation of the method of FIG. 1.

DETAILED DESCRIPTION

Generally speaking, the example methods and systems described herein mayhelp a user to determine a particular formula when the details of theformula are not known to the user. Also, even if the particular formulais known to the user, the example methods and systems may output aformula in a particular syntax in response to the user merely providinga short-hand and/or pseudocode version of the formula. This may beuseful if the formula is particularly long or complex and would betime-consuming for the user to write or type, or enter into a documentusing an equation editor, for example. Thus, a user could enter arelatively small amount of ASCII text, for example, and, in response, acomplex equation, formula, etc., including mathematical or scientificsymbols could be returned. The ASCII text could include technicalshorthand or abbreviations, for example.

A formula, as the term is used herein, may comprise a fact, rule, orprinciple expressed in scientific, mathematical, or technical symbols,for example. A formula may be a scientific or mathematical formula. Anexample of a mathematical formula is a mathematical expression definingthe area of a triangle based on the lengths of the triangle's sides. Auser could enter as an input to a system described herein the text “areaof a triangle,” and the system may return a formula for determining thearea of a triangle based on the lengths of the triangle's sides.Additionally, the system may return a formula for determining the areaof a triangle based on the lengths of two sides and the angle betweenthe sides. Also, the system may return a formula for determining thearea of a triangle based on the base and height of the triangle.Further, the system may generate and return other information related tothe formula(s). For example, it may generate and return a plot of theformula, an integral of the formula, a derivative of the formula, etc.An example of a scientific formula may be a chemical formula.

A formula also may be an expression in a precise syntax, such as asoftware programming language statement, a database query, etc.

FIG. 1 is a flow diagram of an example method 100 for providing one ormore formulas to a user based on an input that may be in an imprecisesyntax. An imprecise syntax is in contrast to a typical computerprogramming language syntax, in which exact spelling, exact placement ofpunctuation, exact placement of parentheses, etc. is necessary tospecify a particular formula. Similarly, with typical computerprogramming language syntax, a slight change in punctuation, forexample, could specify a completely different formula or could render acomputer language statement meaningless to a compiler. On the otherhand, with an imprecise syntax, a formula can be expressed usinglanguage and terms that may be readily understandable to a human, butunintelligible to a computer program such as a compiler. Additionally,with an imprecise syntax, many different variations of language andterms and groupings of language and terms may correspond to one formula.As will be described below, the method 100 may permit a user to obtainprecise formulas by inputting names or descriptions of the formulas intext, inputting pseudo code, inputting incorrectly expressed computerlanguage statements, etc.

The method 100 could be implemented, at least partially, by a serversystem in conjunction with a website, for example. In this context, auser could access the website using a browser running on a personalcomputer, cell phone, personal digital assistant (PDA), etc., forexample, and could utilize the website to obtain formulas and/or outputsrelated to the formulas. It will be understood, however, that the method100 could also be used in other contexts. For example, the method 100could be implemented, at least partially, as part of a “Help” system ofa software application such as a computational tool. In such a context,the user could use the “Help” system to obtain formulas and/or outputsrelated to the formulas.

At a block 104, user input in an imprecise syntax may be received, theinput including an indication of a formula. For example, a user mayinput the text “area of a triangle” into an input field of a web page, a“Help” screen, etc. This entered text may be received, for example, by aweb site server system via the Internet, another computercommunicatively coupled to the user's computer via a network, anapplication running on the user's computer, etc. The user input may alsoinclude indications of values of parameters to be used in the formula.For example, a user may input the text “area of a triangle length ofsides 3, 4, 5”.

At a block 108, one or more possible formulas corresponding to thereceived indication of the formula may be determined. Because the syntaxof the received indication is imprecise, there may be multiple formulasthat possibly may correspond to the indication. Additionally, there mayexist multiple formulas for determining the same desired result. Forexample, if the received input includes the text “area of a triangle,”there are multiple formulas for determining the area of a triangle suchas:Area=½*base*height  (Equ. 1)Area=½*A*B*sin(α)  (Equ. 2)where A is the length of a first side, B is the length of a second side,and α is the angle between the first and second sides, and

$\begin{matrix}{{{Area} = \sqrt{{s\left( {s - A} \right)}\left\{ {s - B} \right)\left( {s - C} \right)}}{where}} & \left( {{Equ}.\mspace{14mu} 3} \right) \\{s = \frac{A + B + C}{2}} & \left( {{Equ}.\mspace{14mu} 4} \right)\end{matrix}$

Because the syntax of the indicator may be imprecise and/or becausethere may exist multiple formulas for determining one desired result, itis possible that a relatively large number of possible formulas and/orformulas not likely to be relevant may be determined at the block 108.Thus, optionally, formulas that are less likely to be relevant thanothers may be omitted or eliminated. For example, a ranking proceduremay be utilized to determine which formulas are not likely to berelevant and which formulas should be omitted or eliminated.

For certain inputs of the user, a process or system that implements theblock 108 may be unable to determine a formula based on the datareceived at the block 104. Additionally, it may be determined that thenumber of possible formulas is high, and additional information may helpreduce the number. Thus, in some implementations, the user may beprompted for additional information that may help to determine formulaor formulas. For example, if the data received at the block 104 isambiguous as to the formula or formulas it may indicate, the user may beprompted to provide additional information to help clear up or reducethe ambiguity. For instance the user could be prompted to inputadditional text, to select one or possibly a plurality of items from alist, to answer one or more yes or no or multiple choice questions, etc.As yet another example, the user could be prompted to talk with a humanoperator, via telephone, email, instant messaging, for example, toascertain the formula that the user was trying to indicate. The humanoperator could then provide additional information to the process orsystem or configure the process or system to interpret such an inputand/or similar inputs in the future. Alternatively, if the process orsystem that implements the block 108 is unable to determine a formulabased on the data received at the block 104, the user may be so notifiedand the method 100 may terminate.

At a block 112, one or more outputs corresponding to the one or moreformulas determined at the block 108 may be generated. For example, ifthe user input received at the block 104 includes indications ofparameters, an output of the formula having the parameters integratedtherein may be generated. For example, if the user entered the text“area of a triangle length of sides 3, 4, 5,” an output such as anoutput showing the side lengths inserted in Equations 3 and 4 could begenerated. Also, if the user has entered enough parameters to compute anumerical result, such a result may be generated.

Additionally, other types of outputs may be generated, including outputsmathematically or otherwise related to the formula. For example, foreach formula, one or more or none of the following may optionally begenerated: a derivative of the formula, an integral of the formula,roots of the formula, one or more plots of the formula or an evaluationof the formula, data related to the formula or an evaluation of theformula, etc. If multiple formulas were determined at the 108, suchother outputs need not be generated for each formula. For instance, suchother outputs could be generated for only the top one, two, three, etc.,ranked formulas could be generated.

At a block 116, the formula(s) determined at the block 108 and theoutput(s) generated at the block 112 may be presented to the user. Thismay comprise transmitting the information from a web site server systemto the user's computer via the Internet, transmitting the informationfrom a computer to the user's computer via a network, etc. If theinformation is transmitted to the user's computer via the Internet,presenting the information may include displaying a web page to theuser. If other blocks of the method 100 are implemented using softwareexecuted by the user's computer, presenting the information need notcomprise transmitting information via a network. For instance, theblocks 108 and 112 could be implemented on the user's computer, and theformula(s) determined at the block 108 and the output(s) generated atthe block 112 could be displayed in a window without having to firsttransmit the formula(s) and the output(s) to the user's computer.

Although graphical user interface mechanisms were described above,mechanical user interfaces may be utilized as well such as gamecontrollers, joysticks, knobs, dials, etc. Similarly, although renderinga numerical result on a display device was described above, other typesof rendering may be implemented such as sending the numerical result toa file or to another software application, or using the numerical resultto generate audio, control light emitting diodes, control a steppermotor, etc.

FIG. 2 is a flow diagram of another example method 130 for providing oneor more formulas to a user based on an input that may be in an imprecisesyntax. The method 130 includes the same blocks 104, 108, 112, and 116as in the method 100 of FIG. 1. Similar to the method 100 of FIG. 1, insome implementations, the user also may be prompted for additionalinformation that may help to determine formula or formulas.Additionally, the method 130 includes a block 134, at which softwareprogramming code for generating one or more of the formula(s) (block108) and/or one or more of the output(s) (block 112) is presented to theuser. The software programming code could be presented in a web page ora window, for example. The software programming code could be presentedin the same web page or window used to present the formula(s) and theoutput(s) at the block 116.

The software programming code could comprise commands in any of avariety of computer programming languages. For example, the softwareprogramming code could comprise code that is to be compiled, such as Cprogramming language code, C++ programming language code, C# programminglanguage code, etc. Also, the software programming code could comprisecode that is to be interpreted. Additionally, the software programmingcode could comprise code to be used in a computational tool such as aspreadsheet application, the MATHEMATICA® software system available fromWolfram Research, Inc., etc. Other types of software programming codecould include Java programming language code, Visual Basic programminglanguage code, etc.

In one implementation, presenting the software programming code maycomprise providing a mechanism for inserting the code in a file. Forinstance, the web page, window, etc., in which the code is presentedcould include a button or some other mechanism by which the code couldbe inserted in a source code file, a notebook, a spreadsheet, etc. Forexample, when the mechanism is activated, the code could be inserted atthe end of a file, at a position of a cursor, at a position of aselected spreadsheet cell or cells, etc.

FIG. 3A is an illustration of an example display 150 that may beutilized in an implementation of the method 100 of FIG. 1. The exampledisplay 150 is configured to permit a user to enter an input thatincludes an indication of a formula. As describe previously, the inputmay be in an imprecise syntax. The display 150 may be part of a webpage, window, etc., for example.

The display 150 includes a field 154 in which a user may type text. Inthe illustration of FIG. 3A, a user has typed the text “X SQUARED” intothe field 154. The display 150 also includes a button 158 that a usermay activate to initiate a determination of the formula corresponding tothe text in the field 154. In the illustration of FIG. 3A, the formulacorresponding to the text is simply the symbolic expression x².

FIG. 3B is an illustration of the example display 150 after the user hasactivated the button 158. In particular, the display 150 is now modifiedto include a portion 162 which includes several fields 166, 170. 174,178, 182, and 186. The field 166 displays the formula (i.e., thesymbolic expression x²) determined based on the text entered into thefield 154.

The portion 162 of the display 150 also includes other outputs that aremathematically related to the formula. For example, the field 170includes a plot of x². The field 174 includes the real roots of x². Thefield 178 includes the derivative of x², and the field 182 includes theindefinite integral of x². Also, the field includes the global minimumof x².

FIG. 4 is an illustration of another example display 200 that may beutilized in an implementation of the method 100 of FIG. 1. Similar tothe display 150 of FIGS. 3A and 3B, the display 200 includes an inputfield 204 and a button 208. In the illustration of FIG. 4, a user hasentered the text “RATE REACTION, POTASSIUM PERSULFATE, POTASSIUM IODIDE”into the field 204. Also, the display 200 includes a portion 212 thatwas generated in response to the user entering the text in the field 204and activating the button 208.

The portion 212 includes several fields 216, 220, 224, and 228. Thefield 216 includes an indication of the formula that was determinedbased on the text provided by the user in the field 204. The field 220displays a chemical reaction formula that is related to the formuladetermined based on the text in the field 204. In particular, the field220 displays the chemical reaction formula of persulfate (S₂O₈ ²⁻)reacting with iodide (2I⁻) to produce sulfate (SO₄ ²⁻) and iodine (I₂).The field 224 displays the rate of reaction formula, and the field 228displays a different mathematical form of the rate of reaction formula.

Referring again to FIGS. 1 and 2, the formulas to be determined may befrom a variety of fields such as mathematics, chemistry, physics,finance, engineering, medicine, etc. In some implementations, a singlesystem that implements a method such as the method 100, the method 130,or some other method, may be configured to determine formulas from aplurality of fields. In other implementations, a system may beconfigured to determine formulas from only one field. For example, asystem may be configured to determine finance-related formulas, whereasa different system may be configured to determine physics-relatedformulas.

FIG. 5 is a flow diagram of yet another example method 240 for providingone or more formulas to a user based on an input that may be in animprecise syntax. The method 240 includes the same blocks 104 and 108 asin the methods 100 and 130 of FIGS. 1 and 2. Similar to the method 100of FIG. 1, in some implementations, the user also may be prompted foradditional information that may help to determine formula or formulas.

Additionally, the method 240 includes a block 244, at which one or moreoutputs corresponding to the one or more formulas determined at theblock 108 may be generated, the one or more output including one or moreoutputs having user-adjustable parameters. Referring now to FIG. 6, anillustration of an example display 250 that may be utilized in animplementation of the method 240 of FIG. 5 is provided. Similar to thedisplay 150 of FIGS. 3A and 3B, and the display 200 of FIG. 4, thedisplay 250 includes an input field 254 and a button 258. In theillustration of FIG. 6, a user has entered the text “AREA OF A TRIANGLE”into the field 254. Also, the display 250 includes a portion 262 thatwas generated in response to the user entering the text in the field 254and activating the button 258.

The portion 262 includes several fields 266, 268, and 270. The field 266includes an indication of the formula(s) that was determined based onthe text provided by the user in the field 254. The field 268 includesan indication 272 of a first formula for determining the area of atriangle based on a base length (A) and a height (H). In particular, thefield 268 displays the formula AREA=½*A*H. The field 268 also includes aplurality of user interface mechanisms for permitting the user to adjustparameters of the formula 272. For example, the field 268 includes atext box 274 in which a user can enter a value of A, a text box 276 inwhich a user can enter a value of H, and a button 278 by which the usercan cause a numerical value of the AREA to be calculated. Afteractivating the button 278, a value of the AREA may be displayed in aportion 280. Although the example display 250 includes text boxes forentering parameter values, other user interface mechanisms may be usedsuch as sliders, knobs, pull-down menus, buttons, etc. Similarly,although the example display 250 includes a button 278 for causing aresult to be calculated, other techniques may be utilized. For example,the result could be calculated in response to text being entered in atext box or a slider being moved, for example. The user adjustableparameter and result calculation functionality of the display 250 may beimplemented using a variety of techniques. For example, if the display150 is part of a web page, applets or some other suitable technique maybe utilized such as client-side or server-side controls (e.g., ActiveServer Page (ASP) technology available from Microsoft®, common gatewayinterface (CGI) technology, Fast CGI, Java Server Page technology, hypertext markup language (HTML) controls, ActiveX controls, Web Formcontrols available from Microsoft®, java controls, etc.). Additionally,techniques such as described in U.S. patent application Ser. No.11/234,550, filed Sep. 23, 2005, entitled “Method of Dynamically LinkingObjects Operated on by a Computational System,” which is herebyincorporated by reference, may optionally be utilized to implement theuser adjustable parameter functionality of the display 250.

The field 270 includes an indication 282 of a second formula fordetermining the area of a triangle based on a first side length (A), asecond side length (B), and an angle (α) between the first and secondsides. In particular, the field 270 displays the formulaAREA=½*A*B*SIN(α). The field 270 also includes a plurality of userinterface mechanisms for permitting the user to adjust parameters of theformula 282. For example, the field 270 includes a text box 284 in whicha user can enter a value of A, a text box 286 in which a user can entera value of b, a text box 288 in which a user can enter a value of α, anda button 290 by which the user can cause a numerical value of the AREAto be calculated. After activating the button 290, a value of the AREAmay be displayed in a portion 292.

Referring again to FIG. 5, the block 244 may also comprise generatingoutputs similar to those described above with respect to the block 112of FIG. 1.

At a block 248, the formula(s) determined at the block 108 and theoutput(s) generated at the block 244 may be presented to the user. Thismay comprise transmitting the information from a web site server systemto the user's computer via the Internet, transmitting the informationfrom a computer to the user's computer via a network, etc. If theinformation is transmitted to the user's computer via the Internet,presenting the information may include displaying a web page to theuser. If other blocks of the method 240 are implemented using softwareexecuted by the user's computer, presenting the information need notcomprise transmitting information via a network. For instance, theblocks 108 and 244 could be implemented on the user's computer, and theformula(s) determined at the block 108 and the output(s) generated atthe block 244 could be displayed in a window without having to firsttransmit the formula(s) and the output(s) to the user's computer.

Optionally, the method 240 may also comprise presenting to the usersoftware programming code for generating one or more of the formula(s)(block 108) and/or one or more of the output(s) (block 244). Thesoftware programming code could be presented in a web page or a window,for example. The software programming code could be presented in thesame web page or window used to present the formula(s) and the output(s)at the block 248. The software programming code could comprise commandsin any of a variety of computer programming languages, such as theprogramming languages described above with reference to FIG. 2.

In one implementation, presenting the software programming code maycomprise providing a mechanism for inserting the code in a file. Forinstance, the web page, window, etc., in which the code is presentedcould include a button or some other mechanism by which the code couldbe inserted in a source code file, a notebook, a spreadsheet, etc. Forexample, when the mechanism is activated, the code could be inserted atthe end of a file, at a position of a cursor, at a position of aselected spreadsheet cell or cells, etc.

FIG. 7 is a flow diagram of still another example method 300 forproviding one or more formulas to a user based on an input that may bein an imprecise syntax. At a block 304, user input in an imprecisesyntax may be received, the input including an indication of a formulaand also including indication(s) of one or more parameter values relatedto the formula. The method may include a block 308, similar to the block108 of FIG. 1, at which one or more formulas corresponding to theindication of the formula received at the block 304 are determined.Similar to the method 100 of FIG. 1, in some implementations, the useralso may be prompted for additional information that may help todetermine formula or formulas.

Additionally, the method 300 includes a block 312, at which one or moreoutputs corresponding to the one or more formulas determined at theblock 308 may be generated. The output(s) may include one or moreoutputs in which parameter values corresponding to the parameter valueindications received at the block 304 are integrated with at least someof the one or more formulas determined at the block 308. Referring nowto FIG. 8, an illustration of an example display 330 that may beutilized in an implementation of the method 300 of FIG. 7 is provided.Similar to the display 150 of FIGS. 3A and 3B, and the display 200 ofFIG. 4, the display 330 includes an input field 334 and a button 338. Inthe illustration of FIG. 8, a user has entered the text “AREA OF ATRIANGLE, SIDES 3, 4” into the field 334. Also, the display 330 includesa portion 342 that was generated in response to the user entering thetext in the field 334 and activating the button 338.

The portion 342 includes several fields 346, 348, and 350. The field 346includes an indication of the formula(s) that was determined based onthe text provided by the user in the field 334. The field 348 includesan indication 352 of the formula for determining the area of a trianglewith the parameter values indicated in the field 334 having beenintegrated into the formula.

Referring again to FIG. 7, the block 312 may also comprise generatingoutputs similar to those described above with respect to the block 112of FIG. 1. Similarly, the block 312 may also comprise generating outputssimilar to those described above with respect to the block 244 of FIG.5. For instance, referring again to FIG. 8, the field 350 also includesa plurality of user interface mechanisms for permitting the user toadjust parameters of the formula. For example, the field 352 includes atext box 354 in which a user can enter a value of A, a text box 356 inwhich a user can enter a value of B, a field 358 in which a user canenter a value of a, and a button 360 by which the user can cause anumerical value of the AREA to be calculated. After activating thebutton 360, a value of the AREA may be displayed in a portion 362.Although the example display 330 includes text boxes for enteringparameter values, other user interface mechanisms may be used such assliders, knobs, pull-down menus, buttons, etc. Similarly, although theexample display 330 includes a button 360 for causing a result to becalculated, other techniques may be utilized. For example, the resultcould be calculated in response to text being entered in a text box or aslider being moved, for example. The user adjustable parameter andresult calculation functionality of the display 330 may be implementedusing a variety of techniques such as those described above with respectto FIG. 6. In other implementations, the display 330 may permit a userto adjust fewer numbers of parameters as compared to the illustration inFIG. 8. For example, a user could be permitted to adjust the angle α,but not the sides A and B.

Referring again to FIG. 7, at a block 316, the formula(s) determined atthe block 308 and the output(s) generated at the block 312 may bepresented to the user. This may comprise transmitting the informationfrom a web site server system to the user's computer via the Internet,transmitting the information from a computer to the user's computer viaa network, etc. If the information is transmitted to the user's computervia the Internet, presenting the information may include displaying aweb page to the user. If other blocks of the method 300 are implementedusing software executed by the user's computer, presenting theinformation need not comprise transmitting information via a network.For instance, the blocks 308 and 312 could be implemented on the user'scomputer, and the formula(s) determined at the block 308 and theoutput(s) generated at the block 312 could be displayed in a windowwithout having to first transmit the formula(s) and the output(s) to theuser's computer.

Optionally, the method 300 may also comprise presenting to the usersoftware programming code for generating one or more of the formula(s)(block 308) and/or one or more of the output(s) (block 312). Thesoftware programming code could be presented in a web page or a window,for example. The software programming code could be presented in thesame web page or window used to present the formula(s) and the output(s)at the block 316. The software programming code could comprise commandsin any of a variety of computer programming languages, such as theprogramming languages described above with reference to FIG. 2.

In one implementation, presenting the software programming code maycomprise providing a mechanism for inserting the code in a file. Forinstance, the web page, window, etc., in which the code is presentedcould include a button or some other mechanism by which the code couldbe inserted in a source code file, a notebook, a spreadsheet, etc. Forexample, when the mechanism is activated, the code could be inserted atthe end of a file, at a position of a cursor, at a position of aselected spreadsheet cell or cells, etc.

FIG. 9 is an illustration of another example display 370 that may beutilized in an implementation of the method 300 of FIG. 7. Similar tothe display 150 of FIGS. 3A and 3B, and the display 200 of FIG. 4, thedisplay 370 includes an input field 374 and a button 378. In theillustration of FIG. 9, a user has entered the text “AREA OF A TRIANGLE,SIDES 3, 4, 5” into the field 374. Also, the display 330 includes aportion 382 that was generated in response to the user entering the textin the field 374 and activating the button 378. The portion 382 includesan indication of a formula for determining the area of a triangle withthe parameter values indicated in the field 374 having been integratedinto the formula.

FIG. 10 is a flow diagram of yet another example method 400 forproviding one or more formulas to a user based on an input that may bein an imprecise syntax. The method 400 may be used to assist aprogrammer in developing software programming code, for example. At ablock 404, user input may be received, the input including an indicationof software programming code. The indication may include one or more ofpseudo code, software programming code having an incorrect syntax, orsoftware programming code having a correct syntax, etc. In someimplementations, the indication may include two or more of pseudo code,software programming code in an incorrect syntax, or softwareprogramming code in a correct syntax. For example, the user input couldbe a mixture of pseudocode and software programming code in one or morelanguages. Additionally, the software programming code could includecode in a mixture of correct and incorrect syntax.

At a block 408, software programming code having a precise syntaxcorresponding to the indication received at the block 404 may bedetermined. This may comprise, for example, determining softwareprogramming code having a precise syntax corresponding to pseudo codeentered in the block 404, determining software programming code having aprecise syntax corresponding to software programming code having anincorrect syntax entered in the block 404, determining differentsoftware programming code in a precise syntax corresponding to softwareprogramming code having the correct syntax entered in the block 404(e.g., more efficient software programming code, code in a differentsoftware programming language, etc.), etc. Similar to the method 100 ofFIG. 1, in some implementations, the user also may be prompted foradditional information that may help to determine the softwareprogramming code.

The block 408 may include determining multiple sets of softwareprogramming code having precise syntax. For example, there might bemultiple interpretations of the input received at the block 404, and themultiple sets of software programming code may be in the sameprogramming language and may correspond to the multiple interpretations.For instance, different sets of code may correspond to differentalgorithms, the same algorithm with different initial conditions orother parameters, etc. As another example, the multiple sets of softwareprogramming code may correspond to different implementations in the sameprogramming language of essentially the same algorithm. As yet anotherexample, the multiple sets of software programming code may correspondto different implementations in different programming languages.

If multiple sets of software programming code are determined at theblock 408, the block 408 optionally may include evaluating the multiplesets to eliminate sets and/or rank sets. For example, sets may beevaluated for code size, memory use efficiency, etc. Also, code setsthat result in unwanted operations such as a “divide-by-zero”, aninfinite loop, etc., may be eliminated.

At a block 412, the software programming code (or multiple sets)determined at the block 408 may be presented to the user. The softwareprogramming code could be presented in a web page or a window, forexample. The software programming code could be presented in the sameweb page or window used to present the formula(s) and the output(s) atthe block 316. The software programming code could comprise commands inany of a variety of computer programming languages, such as theprogramming languages described above with reference to FIG. 2.

In one implementation, presenting the software programming code maycomprise providing a mechanism for inserting the code in a file. Forinstance, the web page, window, etc., in which the code is presentedcould include a button or some other mechanism by which the code couldbe inserted in a source code file, a notebook, a spreadsheet, etc. Forexample, when the mechanism is activated, the code could be inserted atthe end of a file, at a position of a cursor, at a position of aselected spreadsheet cell or cells, etc.

In one implementation, the example method 400 could be used to assist auser in developing code in a particular software programming language.For example, the method 400 could allow a user to enter code in a firstsoftware programming language or in a mixture of first softwareprogramming languages, and receive code in a second software programminglanguage to implement what is generally specified by the code entered bythe user.

With regard to the example methods of FIGS. 1, 2, 5, 7 and 10, it willbe understood by those of ordinary skill in the art that if implementedin a web-based or distributed system, they may be implemented withmultiple server systems. For example, a first server system may provideweb pages to allow a user to input data indicative of a formula. Thefirst server system may then transmit the input to a second serversystem that may determine a formula, software programming code, relatedoutputs, etc., as described above. The second server system may thentransmit display data and/or other outputs it generates back to thefirst server system, and the first server system may in turn transmitthe display data/outputs to the user computer. Such an implementationmay be appropriate for enhancing the capabilities of a standardweb-based search engine implemented by the first server system, forexample.

Also, in some implementations, presentation of the formula may beomitted. For example, only evaluations of the formula and/or relatedoutputs may be presented to the user. In some of these implementations,the user input optionally could be required to be input in a precisesyntax. Multiple outputs corresponding to the formula could bedetermined and presented including outputs such as one or moreevaluations of the formula, one or more outputs that are mathematicallyor otherwise related to the formula, etc.

FIG. 11 is a block diagram of an example system 500 that may be used toimplement one or more of the example methods described previously. Ofcourse other systems may also be used to implement those methods. Thesystem 500 may include an input process 502 for receiving data from auser. The system 500 may be a stand-alone executable application withits own user interface. Also, the system 500 could be an added featureor subsystem of a larger application such as a computational application(e.g., the MATHEMATICA® software system available from Wolfram Research,Inc., a spreadsheet application, etc.). For example, the system 500could be part of a “help” subsystem within a larger application.Additionally, the system 500 could be an applet accessed via a website,for example. Further, the system 500 may also be implemented as a Webservice with a Web browser implementing the user interface in a knownmanner. For example, the system 500 could be browser plug-in or toolbarsystem. The input process 502 may receive input in an imprecise syntax.The input process 502 may also provide elementary error and consistencychecking, for example, to help ensure that at least some characters arepresent or prompting the user with an error when a length limit isexceeded.

The system 500 may also include a parser 504 communicatively coupled tothe input process 502. The parser 504 may examine the input to extractkeywords, group words into phrases, identify numerical expressions,categorize data, etc., for example. The parser 504 may perform aninitial go/no go analysis on the keywords, phrases, or numericalexpressions to determine if there is enough information to proceed to afurther step. When there is not enough information to make even acursory pass at further analysis, the parser 504 may cause the user tobe prompted for additional information such as information that mayclarify the formula desired by the user. Alternatively, the system 500may return the input unchanged along with a message that it cannotinterpret the input.

In one implementation, the parser 504 may take an initial input andcreate tokens, and then assemble the tokens into one or more expressionsin a precise syntax. In other words, the parser 504 may generally takeinput data in an imprecise syntax and generate expressions in a precisesyntax. As an example, if a user enters the text “sin[x]<0.5”, theparser 504 may create a plurality of tokens: “sin”, “[x]”, “<”, and“0.5”, where “sin” is recognized as a function name, “[x]” is recognizedas a variable name, “<” is recognized as an inequality, and “0.5” isrecognized as a real number. Then, the parser 504 may generate anexpression in a precise syntax using these tokens.

Optionally, the parser 504 may perform additional processing. Forexample, the parser may attempt to identify phrases. Additionally, theparser 504 may attempt to rearrange tokens to see if the rearrangementsmatch something that the parser 504 understands, such as a phrase. Forinstance, the parser 504 may utilize algorithmic rearrangements of theinput. Also, the parser 504 may cause the user to be prompted torephrase the input. Then, the parser 504 may analyze the original inputin conjunction with the rephrased input. Further, the parser 504 mayutilize machine learning techniques to identify language processingalgorithms that work better than others.

The one or more expressions generated by the parser 504 may be providedto one or more scanners 506, 510, and 514 that may each have aparticular focus. For example, scanner A 506 may be directed todeveloping a graphical plot for numerical expressions or phrases parsedfrom the input that can be reduced to a plot. As an example, if an inputincludes an expression, such as x², scanner A 506 may develop and outputa plot of x² (i.e., a parabola). As another example, if the expressionis Sin[x]<0.5, scanner A 506 may develop and output a plot of values ofx that satisfy this expression. Other scanners may have other specificspecializations, such as evaluating equations, determining roots,evaluating integrals, evaluating derivatives, determining relevanttransforms, etc. Other specializations may include, for example,determining mathematical formulas, determining chemical formulas,determining physics formulas, determining financial formulas,determining engineering formulas, determining medical formulas, etc.

Still another specialization may include determining appropriatesoftware programming language code (e.g., generating softwareprogramming language code). For instance, a scanner could receive dataindicating a mathematical expression and generate software programminglanguage code for evaluating the expression. As an example, a keyword oran expression related to ballistics may cause the scanner to generatesoftware programming code for modeling the height of a projectile andcode for modeling the distance of a projectile. In another example,input related to airflow over a wing may return code for modelingturbulent fluid flow over a surface or code for modeling lift and dragin a wing, or both.

Depending upon the application, more or less scanners may be utilized.For instance, if an application is to be devoted for use in a financialfield, scanners related to chemical formulas may be omitted.

Some scanners may generate results based on a database query. Forexample, a scanner related to geometry formulas may query a database forkeywords “area” and “triangle” for formulas related to those terms. Asanother example, a scanner may query a database for raw data needed toevaluate an expression. For instance, an expression may include c, thespeed of light, and a scanner may query a database to retrieve anumerical value for c. As another example, an expression may requirestatistical data, such as a population of a particular city, state, orcountry needed to evaluate a “per capita” expression, and the scannermay query a statistical database to obtain the needed data.

Other scanners may generate results by synthesizing outputs. Forexample, a scanner for generating indefinite integrals may receive amathematical expression and synthesize the indefinite integral of thatexpression, rather than searching a database of pre-generated indefiniteintegrals. Some scanners may be capable of doing database queries aswell as synthesis of results. For example, the scanner related togeometry formulas may generate an expression for the area of a trianglebased on a database query, but may also synthesize another expression byintegrating parameter values into formulas retrieved from a database.

In addition to receiving data from the parser 504, each scanner mayshare results with each of the other scanners. Again, results generatedby a scanner based on the shared results may also be shared with each ofthe other scanners, and so on. This process may continue until thescanners no longer have additional data to add, for example. Trivialtransforms may also be recognized and blocked. When each scanner hascontributed to both the original input from the parser 504 and sharedinput from all the other scanners, the results from each scanner torespective postprocessors 508, 512, and 516. The postprocessors 508,512, 516 evaluate the results and may provide a ranking of each resultby assigning a value (e.g., a percentage) to each result.

The ranked results may be passed to an output module 518 which maygenerate an output having the results with rankings above a certainthreshold, while omitting results below the threshold. The threshold maybe set at a predetermined level, or may be adjusted according to thenumber of results and a statistical analysis of the rankings. Forexample, a query that produces ten thousand results may adjust thethreshold to a 99% relevance, thereby limiting the displayed results tothe top 100. In another example though, where perhaps only a half adozen results are returned, all the results may be displayed even thoughthe rankings may be relatively low. The output of the output module 518may comprise a web page, a window, etc., having one or more formulas.Examples of web pages, windows, etc., that the output module 518 maygenerate are shown in FIGS. 3A, 3B, 4, 6, 8, 9. When the results includesoftware programming code, the output module 518 may provide a linkingfunction to insert the software programming code into a file such as anotebook in the MATHEMATICA® software system, a source code file, aspreadsheet, etc.

Particularly in a Web Services or comparable environment, scanners maybe added or reconfigured based on user needs. For instance, feedbackfrom users or an analysis of user queries may be utilized to add ascanner devoted to a new field (e.g., organic chemistry) or to addfurther formula data to an existing scanner. Similarly, scanners may beomitted or removed.

FIG. 12 is flow diagram of yet another example method 600 for providingone or more formulas to a user based on an input that may be in animprecise syntax. The method 600 will be described with reference toFIG. 11 for ease of explanation. It will be understood, however, thatthe method 600 may be utilized with systems other than the system 500,and that the system 500 may implement methods other than the method 600.

Input in an imprecise syntax may be received at block 602 and thenparsed at block 604 to process the input. For example, the input may beanalyzed to create data in a formal or precise syntax. When the parser504 is able to determine a sufficient amount of data to proceed, a ‘yes’branch from a block 606 maybe taken to a block 608. At the block 608,the parsed data (e.g., the output of the parser 504) may be distributedto each of the plurality of scanners 506, 510, 514. As described above,each scanner may examine the output of the parser 504 at the block 608for areas of specific capability with respect to that scanner. When ascanner identifies data it can process, the scanner creates outputspecific to the input and then, at a block 610, the scanner may shareits output with each of the other scanners. For example, the scanner 506may create a mathematical expression and that mathematical expressionmay be delivered to scanners 510 and 514. Scanners 510 and 514 may beable to synthesize output based on the mathematical expression fromscanner 506 that they were not able to process from the direct inputfrom the parser 504. When each scanner can no longer synthesizemeaningful output, the results may be passed to the output module 518 ata block 612. At the block 512, each output may be ranked in terms ofrelevance. Output elements of low relevance optionally may be discarded.At a block 614, output elements that were not discarded at the block 612may be presented to the user. Output elements may be presented in rankorder, or in the case of more common output elements, in a standardpresentation format.

When the parser 504 cannot process the input, the ‘no’ branch from theblock 606 may be taken to block 616 and the user may be prompted formore information. Alternatively, the user may be prompted that the inputcannot be interpreted and the flow may return to the block 602 toreceive a next input.

FIG. 13 is an illustration of another example display 700 that may beutilized in an implementation of a method such as the method 100 ofFIG. 1. The example display 700 is configured to permit a user to enteran input that includes an indication of a formula. As describepreviously, the input may be in an imprecise syntax. The display 700 maybe part of a web page, window, etc., for example.

The display 700 includes a field 704 in which a user may type text. Inthe illustration of FIG. 13, a user has typed the text “int log x” intothe field 704. The display 700 also includes a button 708 that a usermay activate to initiate a determination of the formula corresponding tothe text in the field 704. In the illustration of FIG. 13, a formulacorresponding to the text is the symbolic expression ∫log(x)∂x. Thus, ifthe user activated button 708, the display 700 may display thedetermined formula in a portion 712.

FIG. 14 is an illustration of another example display 720 that may beutilized in an implementation of a method such as the method 100 ofFIG. 1. The display 720 includes a field 724 in which a user may typetext. In the illustration of FIG. 14, a user has typed the text“integral log x” into the field 724. The display 720 also includes abutton 728 that a user may activate to initiate a determination of theformula corresponding to the text in the field 724. In the illustrationof FIG. 14, a formula corresponding to the text is the symbolicexpression ∫log(x)∂x. Thus, if the user activated button 728, thedisplay 720 may display the determined formula in a portion 732.

FIG. 15 is an illustration of another example display 750 that may beutilized in an implementation of a method such as the method 100 ofFIG. 1. The display 750 includes a field 754 in which a user may typetext. In the illustration of FIG. 14, a user has typed the text “1492”into the field 754. The display 750 also includes a button 758 that auser may activate to initiate a determination of the formulacorresponding to the text in the field 754. In the illustration of FIG.15, a formula corresponding to the text is the number 1492. Thus, if theuser activated button 758, the display 750 may display informationrelated to the number 1492. For example, the display 750 may includevarious fields such as the field 762 which indicates the formula (e.g.,the number 1492). Other fields 764, 766, 768, 770, 772, 774, and 776provide information related to the number 1492.

FIG. 16 is an illustration of a portion of another example display 800that may be utilized in an implementation of a method such as the method100 of FIG. 1. The portion of the display 800 may be displayed inresponse to a user entering the text “3 4 5” and activating a button onthe display 800. The determined formula is the sequences of numbers {3,4, 5} and is displayed in a portion 802. The display 800 may displayinformation related to the sequences of numbers {3, 4, 5}. For example,the display 800 may include various fields 804, 806, 808, 810, 812, 814,and 816 that provide information related to the sequences of numbers {3,4, 5}.

FIG. 17 is an illustration of a portion of another example display 850that may be utilized in an implementation of a method such as the method100 of FIG. 1. The portion of the display 850 may be displayed inresponse to a user entering the text “gdp France/Germany” in a portion852 and activating a button on the display 850. The determined formulais an expression in a precise syntax and is displayed in a portion 853.The display 850 may display information related to the determinedexpression. For example, the display 850 may include various fields 854,856, 858 that provide information related to the expression in the field853. The field 854 provides a more “user friendly” indication of thedetermined formula. The field 856 includes an evaluation of the formulawith data obtained from a database, for example. The field 858 includesa plot of an evaluation of the formula using GDP values from severalyears.

FIG. 18 is an illustration of a portion of another example display 900that may be utilized in an implementation of a method such as the method100 of FIG. 1. The portion of the display 900 may be displayed inresponse to a user entering the text “a_a” in a field 902 and activatinga button on the display 900. The determined formula is an expression ina precise syntax and is displayed in a portion 904. The display 900 maydisplay information related to the determined expression. For example,the display 900 may include various fields 906 and 908 that provideinformation related to the expression in the field 904. The field 906provides a more “user friendly” indication of the determined formula.The field 908 includes an evaluation of the formula with data obtainedfrom a database, for example.

FIG. 19 is an illustration of a portion of another example display 950that may be utilized in an implementation of a method such as the method100 of FIG. 1. The portion of the display 900 may be displayed inresponse to a user entering the text “London” in a field 952 andactivating a button on the display 950. The display 950 may displayinformation related to the determined formula. For example, the display950 may include various fields 954, 956, 958, 960, and 962 that provideinformation related to the determined formula. The field 954 provides a“user friendly” indication of the determined formula. The field 956provides an alternative representation or indication of the determinedformula. The field 958 includes data related to the formula and obtainedfrom a database, for example. The field 960 includes a map indicatingthe location of London, Ontario, Canada. The field 962 includes locationdata for London, Ontario, Canada, obtained from a database, for example.

In the above-described methods and systems, the user input could bereceived in a variety of ways. For example, the user input could includetext entered via a keyboard, a keypad, a touch screen, etc., of a devicesuch as a workstation, a desktop computer, a laptop computer, a tabletcomputer, a personal digital assistant (PDA), a cellular phone, etc. Theuser input could be received in other forms as well. For example, theuser input could be received via a voice recognition system. As anotherexample, the user input could be received in a graphical form. Forinstance, handwriting recognition techniques could be used to convertthe input into a textual form or some other form.

Also, a user could draw a plot of a function on a touch screen of acomputer. Formulas to generate the plot, or an approximation of theplot, could be determined. As another example, a user could also drawnotations or annotations on the plot, and these notations or annotationscould be utilized to determine formulas and/or to format output to bepresented to the user. For instance, if a user draws a plot and puts an“X” at the maximum of a curve, a formula for determining the maximum ofthe function corresponding to the plot could be determined. Additionallyor alternatively, if a plot of the determined formula is presented tothe user, the presented plot could include an “X” or a similar mark in alocation corresponding to the location of the “X” drawn by the user.

Additionally, the input need not be received directly from a user. Forexample, the methods and systems described above could receive inputfrom a file, or the input could be a signal generated by a device suchas a sensor, a signal received by another computing device, etc. Forinstance, a file or signal could include data values, and a function, amodel, etc., that best fits the data could be determined.

In presenting the formulas, outputs, software programming code, etc., toa user, such information may be presented in a way that allows it to bereadily transferred to a file such as document. For instance, a formulacould be presented as text so that it could be transferred to anotherdocument using standard “cut and paste” techniques. Alternatively, theformulas, outputs, software programming code could be presented alongwith a mechanism that would allow such information to be inserted intoanother document having a particular format such as a spreadsheet, aword processing document for use with a particular equation editor, aMATHEMATICA® notebook, etc. The mechanism could include a user interfacemechanism such as a button, a drag-and-drop mechanism, etc. For example,a user could activate a button to have an equation inserted into a wordprocessing document, the equation being in a format of a particularequation editor compatible with the word processing program.

Any of the techniques described above, including the blocks describedwith reference to FIGS. 1-16, may be implemented using softwarecomprising computer program instructions. Such computer programinstructions may control the operation of a computing device such as adesktop computer, a laptop computer, a tablet computer, a workstation, aserver, a mainframe, a cellular phone, a telephone, a set top box, aPDA, a pager, a processing system of an electronic toy, a processingsystem of an electronic game, a processing system of a consumerelectronics device, etc. The computing device may have a memory in whichthe computer program instructions may be stored. The computer programinstructions may be written in any high level language such as theprogramming language used with MATHEMATICA® software systems, C, C++,C#, Java or the like or any low-level assembly or machine language. Bystoring computer program instructions in a memory of the computingdevice, the computing device is physically and/or structurallyconfigured in accordance with the computer program instructions.

While many methods and systems have been described herein as beingimplementable in software, they may be implemented in hardware,firmware, etc., and may be implemented by a variety of computing systemsand devices. Thus, the method blocks and system blocks described hereinmay be implemented in a standard multi-purpose central processing unit(CPU), a special purpose CPU, or on specifically designed hardware orfirmware such as an application-specific integrated circuit (ASIC) orother hard-wired device as desired. When implemented in software, thesoftware routine may be stored in any computer readable memory such ason a magnetic disk, a laser disk (such as a compact disk (CD), a digitalversatile disk (DVD)), a flash memory, a memory card, a memory stick,etc., or other storage medium, in a RAM or ROM of a computer orprocessor, in any database, etc. Likewise, this software may bedelivered via any known or desired delivery method including, forexample, on a computer readable memory or other transportable computerstorage mechanism or over a communication channel such as a telephoneline, the internet, etc. (which are viewed as being the same as orinterchangeable with providing such software via a transportable storagemedium).

The present disclosure has been described with reference to specificexamples, which are intended to be illustrative only and not to belimiting. It will be apparent to those of ordinary skill in the art thatchanges, additions or deletions may be made to the disclosed exampleswithout departing from the spirit and scope of the disclosure. Thedetailed description is to be construed as exemplary only and does notdescribe every possibly embodiment of the invention because describingevery possible embodiment would be impractical, if not impossible.Numerous alternative embodiments could be implemented, using eithercurrent technology or technology developed after the filing date of thispatent, which would still fall within the scope of this application.

Thus, many modifications and variations may be made in the techniquesand systems described and illustrated herein without departing from thespirit and scope of the present invention. Accordingly, it should beunderstood that the methods and systems described herein areillustrative only and are not limiting upon the scope of the invention.

What is claimed is:
 1. A computer-implemented method, comprising: receiving, at one or more computer processors, a user input in an imprecise syntax, wherein: the user input in the imprecise syntax includes at least (i) a word, or a phrase, that corresponds to a formula having a plurality of mathematical or scientific parameters, and (ii) one or more words, and/or one or more phrases, that correspond to one or more parameter values corresponding to the formula, the user input in the imprecise syntax is expressed using natural language and/or informal terminology spoken by a user, and the user input in the imprecise syntax corresponds to a digital representation of an audio signal corresponding to speech spoken by the user, the digital representation of the audio signal corresponding to the speech spoken by the user having been generated by a voice recognition system; analyzing, at the one or more computer processors, the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula; calculating, at the one or more computer processors, a numerical result using the determined formula with the one or more parameter values integrated into the determined formula; and generating, at the one or more computer processors, an output, using the numerical result, to perform a physical machine action.
 2. The computer-implemented method of claim 1, wherein analyzing the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula further comprises: determining a plurality of possible formulas that correspond to the user input in the imprecise syntax; and at least one of (i) ranking the plurality of possible formulas, and (ii) eliminating one or more possible formulas of the plurality of possible formulas.
 3. The computer-implemented method of claim 1, wherein analyzing the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula further comprises: analyzing the user input in the imprecise syntax to identify a first parameter corresponding to a first parameter value in the one or more parameter values; and determining the formula based, at least in part, on the identified first parameter.
 4. The computer-implemented method of claim 1, wherein analyzing the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula further comprises: identifying the formula from the user input in the imprecise syntax at least by: parsing the user input in the imprecise syntax into a plurality of tokens, re-arranging the plurality of tokens into a plurality of expressions in a precise syntax, and analyzing the plurality of expressions in the precise syntax.
 5. The computer-implemented method of claim 1, wherein analyzing the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula further comprises: partitioning the user input in the imprecise syntax into a plurality of tokens, wherein each token of the plurality of tokens comprises a word, a phrase, or a numerical expression; generating one or more expressions in a precise syntax using the plurality of tokens; and providing the one or more expressions in the precise syntax to a plurality of modules, wherein each module of the plurality of modules is configured to at least one of i) determine formulas corresponding to a respective subject matter category, among a plurality of different subject matter categories of formulas, by analyzing the one or more expressions in the precise syntax provided to the module, and ii) evaluate formulas corresponding to the respective subject matter category, and wherein each module of the plurality of modules is implemented using software executed by the one or more computer processors.
 6. The computer-implemented method of claim 5, wherein analyzing the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula further comprises: for each module of the plurality of modules, providing an output of the module as one or more inputs to one or more other modules of the plurality of modules.
 7. The computer-implemented method of claim 1, wherein analyzing the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula further comprises: analyzing the user input in the imprecise syntax to determine a correspondence between (i) the one or more parameter values corresponding to the user input in the imprecise syntax and (ii) one or more mathematical or scientific parameters of the formula.
 8. The computer-implemented method of claim 1, further comprising: determining, at the one or more computer processors, that one or more additional parameter values are required to calculate the numerical result; and electronically prompting, at the one or more computer processors, the user to provide additional information corresponding to the one or more additional parameter values.
 9. The computer-implemented method of claim 1, wherein generating the output, using the numerical result, to perform the physical machine action further comprises displaying the numerical result on a display device.
 10. The computer-implemented method of claim 1, wherein generating the output, using the numerical result, to perform the physical machine action further comprises electronically inserting the numerical result into an electronic document.
 11. The computer-implemented method of claim 1, wherein generating the output, using the numerical result, to perform the physical machine action further comprises transmitting the numerical result to a computing device via a communication network.
 12. The computer-implemented method of claim 1, wherein generating the output, using the numerical result, to perform the physical machine action further comprises sending the numerical result to a software application being executed by the one or more computer processors.
 13. The computer-implemented method of claim 1, wherein generating the output, using the numerical result, to perform the physical machine action further comprises generating an audio signal indicative of the numerical result.
 14. The computer-implemented method of claim 1, wherein generating the output, using the numerical result, to perform the physical machine action further comprises using the numerical result to control a motor.
 15. The computer-implemented method of claim 1, wherein generating the output, using the numerical result, to perform the physical machine action further comprises using the numerical result to control a light.
 16. The computer-implemented method of claim 1, further comprising: displaying, at the one or more computer processors, on a display device, a graphical user interface mechanism for facilitating adjustment, by the user, of one or more mathematical or scientific parameters of the formula.
 17. The computer-implemented method of claim 1, further comprising: receiving, at the one or more computer processors, one or more respective indications of one or more respective adjustments of one or more respective parameter values corresponding to the formula; calculating, at the one or more computer processors, an updated numerical result using i) the determined formula and ii) the one or more respective adjustments of the one or more respective parameter values corresponding to the formula; and using, at the one or more computer processors, the updated numerical result to perform a subsequent physical machine action.
 18. The computer-implemented method of claim 17, wherein receiving the one or more respective indications of the one or more respective adjustments of the one or more respective parameter values corresponding to the formula further comprises: receiving a first indication of a first adjustment of a first parameter value corresponding to the formula; wherein the first indication of the first adjustment of the first parameter value corresponding to the formula corresponds to a digital representation of an audio signal corresponding to subsequent speech spoken by the user, the digital representation of the audio signal corresponding to the subsequent speech spoken by the user having been generated by the voice recognition system.
 19. The computer-implemented method of claim 17, wherein receiving the one or more respective indications of the one or more respective adjustments of the one or more respective parameter values corresponding to the formula further comprises: receiving a first indication of a first adjustment of a first parameter value corresponding to the formula via a graphical user interface mechanism displayed on a display device.
 20. The computer-implemented method of claim 17, wherein receiving the one or more respective indications of the one or more respective adjustments of the one or more respective parameter values corresponding to the formula further comprises: receiving a first indication of a first adjustment of a first parameter value corresponding to the formula via a mechanical user interface device.
 21. A system, comprising: one or more memory devices; and one or more processors coupled to the one or more memory devices; wherein the one or more memory devices store machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: receive a user input in an imprecise syntax, wherein: the user input in the imprecise syntax includes at least (i) word, or a phrase, that corresponds to a formula having a plurality of mathematical or scientific parameters, and (ii) one or more words, and/or one or more phrases, that correspond to one or more parameter values corresponding to the formula, the user input in the imprecise syntax is expressed using natural language and/or informal terminology spoken by a user, and the user input in the imprecise syntax corresponds to a digital representation of an audio signal corresponding to speech spoken by the user, the digital representation of the audio signal corresponding to the speech spoken by the user having been generated by a voice recognition system; wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: analyze the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula; calculate a numerical result using the determined formula with the one or more parameter values integrated into the determined formula; and generate an output, using the numerical result, to perform a physical machine action.
 22. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: determine a plurality of possible formulas that correspond to the user input in the imprecise syntax; and at least one of (i) ranking the plurality of possible formulas, and (ii) eliminating one or more possible formulas of the plurality of possible formulas.
 23. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: identify the formula from the user input in the imprecise syntax at least by: parsing the user input in the imprecise syntax into a plurality of tokens, re-arranging the plurality of tokens into a plurality of expressions in a precise syntax, and analyzing the plurality of expressions in the precise syntax.
 24. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: partition the user input in the imprecise syntax into a plurality of tokens, wherein each token of the plurality of tokens comprises a word, a phrase, or a numerical expression; generate one or more expressions in a precise syntax using the plurality of tokens; and provide the one or more expressions in the precise syntax to a plurality of modules, wherein each module of the plurality of modules is configured to at least one of i) determine formulas corresponding to a respective subject matter category, among a plurality of different subject matter categories of formulas, by analyzing the one or more expressions in the precise syntax provided to the module, and ii) evaluate formulas corresponding to the respective subject matter category, and wherein each module of the plurality of modules is implemented using machine readable instructions, stored in the one or more memory devices, that are executed by the one or more processors.
 25. The system of claim 24, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: for each module of the plurality of modules, provide an output of the module as one or more inputs to one or more other modules of the plurality of modules.
 26. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: analyze the user input in the imprecise syntax to determine a correspondence between (i) the one or more parameter values corresponding to the user input in the imprecise syntax and (ii) one or more mathematical or scientific parameters of the formula.
 27. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: determine that one or more additional parameter values are required to calculate the numerical result; and electronically prompt the user to provide additional information corresponding to the one or more additional parameter values.
 28. The system of claim 21, further comprising: a display device coupled to the one or more processors; wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to display the numerical result on the display device.
 29. The system of claim 28, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: display, on the display device, a graphical user interface mechanism for facilitating adjustment, by the user, of one or more mathematical or scientific parameters of the formula.
 30. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: electronically insert the numerical result into an electronic document.
 31. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: transmit the numerical result to a computing device via a communication network.
 32. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: send the numerical result to a software application being executed by the one or more processors.
 33. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: use the numerical result to generate an audio signal.
 34. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: use the numerical result to control a motor.
 35. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: use the numerical result to control a light.
 36. The system of claim 21, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: receive one or more respective indications of one or more respective adjustments of one or more respective parameter values corresponding to the formula; calculate an updated numerical result using i) the determined formula and ii) the one or more respective adjustments of the one or more respective parameter values corresponding to the formula; and use the updated numerical result to perform a subsequent physical machine action.
 37. The system of claim 36, wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: receive a first indication of a first adjustment of a first parameter value corresponding to the formula; wherein the first indication of the first adjustment of the first parameter value corresponding to the formula corresponds to a digital representation of an audio signal corresponding to subsequent speech spoken by the user, the digital representation of the audio signal corresponding to the subsequent speech spoken by the user having been generated by the voice recognition system.
 38. The system of claim 36, further comprising: a display device coupled to the one or more processors; wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: receive a first indication of a first adjustment of a first parameter value corresponding to the formula via a graphical user interface mechanism displayed on the display device.
 39. The system of claim 36, further comprising: a mechanical user interface device; wherein the one or more memory devices store further machine readable instructions that, when executed by the one or more processors, cause the one or more processors to: receive a first indication of a first adjustment of a first parameter value corresponding to the formula via the mechanical user interface device.
 40. The system of claim 21, further comprising: the voice recognition system, coupled to the one or more processors. 